
#include <stdint-gcc.h>
#include "stdlib.h"
#include "stdio.h"
#include "string.h"

// void print_arr(char *arr)
//{
//	while (*arr++ != '\0') {
//		printf("%c", *arr);
//	}
//	printf("\n");
// }

// int quanju;

// void fun();
// int fibonnacci(int num)
//{
//	static long long size;
//	size += 1;
//	if (num == 1 || num == 2) {
////		if (size % 100000000 == 0) {
////			printf("malloc size is %d\n", size);
////		}
//		return 1;
//	}
//	else {
//		return fibonnacci(num - 1) + fibonnacci(num - 2);
//	}
//}

// void printf_words(){
//	char arr[] = "abc rfg\nwds  yyg";
//	char* token;
//	static char whitespace[] = "\t\f\r\v\n ";
//	for (token = strtok(arr,whitespace);
//		 token!=NULL;
//		 token = strtok(NULL,whitespace)){
//		printf("word is %s\n",token);
//	}
// }
// typedef struct USER User;
// typedef struct CLASS{
//	char *name;
//	User* user;
// }Class;
// typedef struct USER{
//	int id;
//	char *uname;
//	Class class;
// }User;
// int8_t a = 1;
// void fun(int a, int b, int c, int d)
//{
//	printf("%d\t", a);
//	printf("%d\t", b);
//	printf("%d\t", c);
//	printf("%d\t\n", d);
// }
// int add(int a,int b){
//	int x;
//	x =a+b;
//	return ;
//	//由于d0寄存器是运算的的中间暂存位置，同时返回值也是由d0传递，所以本题仍然能够传递参数
// }
void f(char **p)
{
	*p += 2;
}
void f1(char *p[4])
{
	*p += 2;
}
int main()
{
	// double a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}, *p;
	// p = &a[1];
	// printf("%lf\t", a[p - a]);
	// printf("%d", p - a);

	// char *a[3] = {"123", "abc", "456"}, **p;
	// p = a;
	// f1(p);
	// printf("%s", *p);

	char a[3][3] = {"123", "abc", "456"}, **p;
	p = a;
	*p += 2;
	printf("%s", a[0] + 2);

	// printf("1\v 2\v3\n");
	// printf("123\v 456\tabc");
	// printf("%s", *(p + 1));
	// printf("\n%s", a[0]);
	// const char c;
	// printf("%c", c);
	//   int x[4][5];
	// 	x[3][4] = 100;
	// 	for (int i = 0; i < 4; ++i) {
	// 		for (int j = 0; j < 5; ++j) {
	// 			x[i][j]=i*10+j;
	// 		}
	// 	}
	// 	printf("%d\n",x[3][4]);
	//
	// 	printf("%d\n",*(x+3)[4]);
	// 	printf("%p\n",&x[3][4]);
	// 	printf("%p\n",&(*(x+3)[4]));
	// 	printf("%d\n",&(*(x+3)[4])-&x[3][4]);
	//	{
	//		int p[8] = {11, 12, 13, 14, 15, 16, 17, 18}, i = 0, j = 0;
	//		while(i++ < 7) if(p[i]%2) j += p[i];
	//		printf("%d\n",j);
	//	}
	//	int a;
	//
	//	printf("%d",sizeof 'a');
	//	struct user{
	//		 //4
	//		 char c3;
	//		 short s;
	//		 int as;
	//		char c1;    //1
	//		  //1 + 2
	//		char c;     //1
	//		char i;     		//3
	//	}user;
	//	printf("%d",sizeof user);
	//	int a;
	//	++a++;
	//	int expression=555;
	//	switch (expression) {
	//	case 0...999:
	//		printf("999");
	//	}
	//	{
	//		int c = 0,k;
	//		for(k = 1;k < 3;k++) {
	//			switch (k) {
	//			default : c += k;
	//			case   2: c++;
	//				break;
	//			case   4: c += 2;
	//				break;
	//			}
	//		}
	//		printf("%d\n", c);
	//		return 0;
	//	}
	//	{
	//		char *s = "one", a[5] = {0}, (*f1)(char *) = fun, ch;
	//		ch = (*f1)(s);
	//	}

	//	printf("\r%d ", add(1,2));
	//	int (*AFunction(cahar *ch,int (*p)(int,int))) (int, int);
	//	int (*fun_p)(int i);
	//	fun_p = fibonnacci;
	//	fun_p(47);
	//	char arr1[10] = "1234";
	//	int arr2[10] = {1, 2, 3, 4};
	//	arr1 = "123134";
	//	arr2 = {1,2,3,4,5,6};
	//	User u ;
	//	int i;
	//	while (1) {
	//		printf("\r%d ", arr2 + i);
	//		i++;
	//	}
	//	int a = 10;
	////	int c = a+++a+++a++;
	////	int d = (++a)+(++a)+(++a);
	//			//	3 2   3   4    6    7
	//			// 3  2   4   5    7    8
	//	int e = (++a)+a+++a+++a+++(++a)+(++a);
	//	printf("%d\n",e);
	//                 13  12  11  10
	//	printf("%d\t%d\t%d\t%d\n", a++, a++, a++, a++);
	//	//压栈
	//	//右左原则?
	//	a = 10;
	//	printf("%d\t%d\t%d\t%d\n", ++a, ++a, ++a, ++a);
	//	a = 10;
	//                      //
	//	printf("%d\t%d\t%d\t%d\n", ++a, a++, ++a, a++);
	//	printf("%d\t%d\t%d\t%d\n", a++, a++, a++, ++a);
	////FILE* f;
	//	a = 10;
	//	fun(a++, a++, a++, a++);
	//	a = 10;
	//	fun(++a, ++a, ++a, ++a);
	//	a =10;
	//	fun(++a, a++, ++a, a++);
	//
	//	a =10 ;           //13   10   13  14
	//	printf("%d\n",++a+a+++(++a)+(++a));
	//
	//	a =10 ;         //  10  11   13    14 ++a 在左边时会出现缓冲，在右边不会
	//	printf("%d",a+++a+++(++a)+(++a));
	//	printf("%d",c);
	//	User * user=&u;
	//	u.id = 1;
	//	u.uname = "str";
	//	u.class.name="no 1";
	//	printf("%s\n",u.class.name);
	//	printf("%s\n",user->class.name);
	//	printf("%s\n",(*user).class.name);
	//	printf_words();
	//	char buffer[] = "25,142,330,";
	//	int const b;
	//	printf("\r%d ", b);
	//	printf("1234\rab\n789\n");
	//	int arr[3][1] = {1, 2, 5};
	//	for (int i = 0; i < 7; ++i) {
	//		printf(" %d\n", *(*(arr + 0) + i));
	//	}
	//	printf(" %d\nend\n", *(*(arr + 0) + 6));
	//	printf(" %d\nend\n", *(*(arr + 0) + 7));
	////	for (int i = 1; i < 30; ++i) {
	//		printf("fibonnacci(%d) is %d\n", i, fibonnacci(i));
	//	}

	//	const int a = 10;
	//	int *p1 = NULL;
	//	int *p12;
	//	int *p1;
	//	int *p2 = NULL;
	//	int *p2;
	//	printf("%x\n",p12);
	//	printf("%x\n",p1);
	//	int a = 10;
	//	printf("%x\n",&a);
	//	printf("%d",p1<=p2);
	//		printf("%d",*p1);
	//	int arr[10] ;
	//	p1 = arr;
	//	int i=9;
	//	for(p1 = &arr[9] ;p1>=&arr[0];p1--)
	//	{
	//		printf("%d",i--);
	//	}

	//	*p = 12;
	//	printf("%x\n",++p1);
	//	printf("%d\n",*p1);
	//	printf("%x\n",++p2);
	//	printf("%d",*p);
	// short *p1,*p2,*p3;
	// char a,b,c;
	//    p1 = &a;
	//	p2 = &b;
	//	p3 = &c;
	//	a=0;
	//	b=100;
	//	c=100;
	//	printf("%d\t",*p1);
	//	printf("%d\t",*p2);
	//	printf("%d\t\n",*p3);

	//	a>b?(a>c?a:c):(b>c?b:c);

	//	if(a>b?a>c:b>c){
	//		if
	//		max a
	//		else
	//		max b
	//	}
	//	else
	//	max c
	//	printf("%d\t\n",sizeof (b*c));
	//	printf("%d\t\n",a);
	//	printf("%d\t",*p1);
	//	printf("%d\t",*p2);
	//	printf("%d\t",*p3);

	//	int a = 10;
	//
	//	printf("%d",a++);
	//	printf("%d",a);
	//	if (0){
	//		printf("true");
	//	}else{
	//		printf("false%d",0>1);
	//	}
	//	char arr[21];
	//	for (int i = 0; i < 21; ++i) {
	//		arr[i] = ' ';
	//	}
	//	arr[11] = '*';
	//	for (int i = 0; i < 10; ++i) {
	//		arr[11 + i] = '*';
	//		arr[11 - i] = '*';
	//		print_arr(arr);
	//	}
	//	for (int i = 0; i < 21; ++i) {
	//		arr[i] = ' ';
	//	}
	//	arr[10] = '|';
	//	arr[11] = '|';
	//	for (int i = 0; i < 6; ++i) {
	//		print_arr(arr);
	//	}
	//	int i=1;
	//	printf("%d\n",!i);
	//	i=1;
	//	printf("%d\n",!i>=0);
	//	i=1;
	//	printf("%d\n",!(i>=0));
	//	char i = -97;
	//	int e = i;
	//	int* p = &i;
	//	printf("%d\n",i);
	//	printf("%u\n",i);
	//	printf("%u\n",*p);
	//	float f;
	//	printf("%d\n", sizeof f);
	//	int Case, While, If, Stop;
}
